#!/usr/bin/env node

const fs = require('fs');
const typ = process.argv[2];
const src = process.argv[3];
const join = require('path').join;


if(typ==='-list'){
  if(typeof(src)==='undefined'){
    console.error('请指定文件');
    process.exit(1);
  }
 try{
   const files = fs.readdirSync(src);
   const arr1=[];
   for(let i =0;i<files.length;i++){
     //获得路径
     const pathFiles = join(src,files[i]);
     const statFile = fs.statSync(pathFiles);
    //日期重定义
     var dt = new Date(statFile.birthtimeMs);
     const date = dt.getFullYear()+'-'+(dt.getMonth()<10 ? '0'+(dt.getMonth()+1):(dt.getMonth()+1))+'-'+(dt.getDate()<10 ? '0'+dt.getDate():dt.getDate())+' '+dt.getHours()+':'+(dt.getMinutes()<10?'0'+dt.getMinutes():dt.getMinutes());
     const data= {'fileName':files[i],'fileSize':statFile.size,'createTime':date};
     arr1.push(data); 
  }
  
   //排序
   arr1.sort(function(a,b){
     return Date.parse(a['createTime']) > Date.parse(b['createTime']) ? 1 : -1
   })
   console.log(JSON.stringify(arr1));
 }catch(e){
   console.error(e.message);
   process.exit(1);
 }
}


//打印文件内容
if(typ === '-show'){
  const rs  = fs.createReadStream(src);
  if(typeof(src)==='undefined'){
    console.error('请指定文件');
    process.exit(1);
  }
  if(!fs.existsSync(src)){
    console.error('%s not exist',src);
    process.exit(2);
  }
  rs.on('error',(e)=>{
    console.error(e.message);
  });
  rs.pipe(process.stdout);
}


//删除
if(typ ==='-del'){
  if(typeof(src)==='undefined'){
    console.error('请指定要删除的文件或文件夹');
    process.exit(1);
  }
  try{
    if(!fs.existsSync(src)){
      console.error('%s 不存在',src);
      process.exit(2);
    }
    if(fs.statSync(src).isFile()) {
      fs.unlinkSync(src);
      console.log('%s删除成功',src);
    }else{
      deleteDir(src);
      console.log('%s删除成功',src);
    }
    function deleteDir(folder){
      let files = fs.readdirSync(folder);
      for(let i = 0; i < files.length; i++){
        let file = join(folder,files[i]);
        if(fs.statSync(file).isFile()){
          fs.unlinkSync(file);
          continue;
        }
        if(fs.statSync(file).isDirectory())
          deleteDir(file);
      }
      fs.rmdirSync(folder);
    }
  }catch(e){
    console.error(e.message);
    process.exit(1);
    
  }
}


